#负责数据展示
import tkinter as tk
from tkinter import ttk
from db import db
# self.about_frame=tk.Frame(self.root)
# tk.Label(self.about_frame,text='关于作品：本作品由tkinter制作').pack()
# tk.Label(self.about_frame,text='关于作者：群里最弱的萌新').pack()
# tk.Label(self.about_frame,text='版权所有：B站号').pack()

class AboutFrame(tk.Frame):
    def __init__(self,root):
        super().__init__(root)
        tk.Label(self,text='关于作品：Lczhy85').pack()
        tk.Label(self,text='关于作者：Lczhy85').pack()
        tk.Label(self,text='版权所有：Lczhy85').pack()



class ChangeFrame(tk.Frame):
    def __init__(self,root):
        super().__init__(root)
        self.name=tk.StringVar()
        self.net=tk.StringVar()
        self.db=tk.StringVar()
        self.c=tk.StringVar()
        self.math=tk.StringVar()
        self.structure=tk.StringVar()
        self.status=tk.StringVar()
        self.create_page()
    def create_page(self):
        tk.Label(self).grid(row=0,pady=10)
        tk.Label(self,text='姓名：').grid(row=1,column=1,pady=10)
        tk.Entry(self,textvariable=self.name).grid(row=1,column=2,pady=10)

        tk.Label(self,text='计算机网络原理：').grid(row=2,column=1,pady=10)
        tk.Entry(self,textvariable=self.net).grid(row=2,column=2,pady=10)

        tk.Label(self,text='数据库系统原理：').grid(row=3,column=1,pady=10)
        tk.Entry(self,textvariable=self.db).grid(row=3,column=2,pady=10)

        tk.Label(self,text='C语言：').grid(row=4,column=1,pady=10)
        tk.Entry(self,textvariable=self.c).grid(row=4,column=2,pady=10)

        tk.Label(self,text='离散数学：').grid(row=5,column=1,pady=10)
        tk.Entry(self,textvariable=self.math).grid(row=5,column=2,pady=10)

        tk.Label(self,text='数据结构：').grid(row=6,column=1,pady=10)
        tk.Entry(self,textvariable=self.structure).grid(row=6,column=2,pady=10)

        tk.Button(self,text="修改",command=self.change_user).grid(row=7,column=1,pady=10)
        #绑定这个按钮对应的事件
        tk.Button(self, text="查询", command=self.search_user).grid(row=7, column=2, pady=10)

        tk.Label(self,textvariable=self.status).grid(row=9,column=2,pady=10,stick=tk.E)

    def search_user(self):
        flag,info=db.search_by_username(self.name.get())
        if flag:
            self.name.set(info['name'])
            self.net.set(info['net'])
            self.db.set(info['db'])
            self.c.set(info['c'])
            self.math.set(info['math'])
            self.structure.set(info['structure'])
            self.status.set("数据查询成功")
        else:
            self.status.set(info)

    def change_user(self):
        stu = {"c": self.c.get(),
               "name": self.name.get(),
               "net": self.net.get(),
               "structure": self.structure.get(),
               "math": self.math.get(),
               "db": self.db.get()}
        # 录入完毕后重置为空
        self.c.set('')
        self.name.set('')
        self.net.set('')
        self.structure.set('')
        self.math.set('')
        self.db.set('')
        # print(stu)
        flag,message=db.update(stu)
        self.status.set(message)
class InsertFrame(tk.Frame):
    def __init__(self,root):
        super().__init__(root)
        #tk.Label(self,text='插入页面').pack()
        self.name=tk.StringVar()
        self.net=tk.StringVar()
        self.db=tk.StringVar()
        self.c=tk.StringVar()
        self.math=tk.StringVar()
        self.structure=tk.StringVar()
        self.status=tk.StringVar()
        self.create_page()

    def create_page(self):
        tk.Label(self).grid(row=0,pady=10)
        tk.Label(self,text='姓名：').grid(row=1,column=1,pady=10)
        tk.Entry(self,textvariable=self.name).grid(row=1,column=2,pady=10)

        tk.Label(self,text='计算机网络原理：').grid(row=2,column=1,pady=10)
        tk.Entry(self,textvariable=self.net).grid(row=2,column=2,pady=10)

        tk.Label(self,text='数据库系统原理：').grid(row=3,column=1,pady=10)
        tk.Entry(self,textvariable=self.db).grid(row=3,column=2,pady=10)

        tk.Label(self,text='C语言：').grid(row=4,column=1,pady=10)
        tk.Entry(self,textvariable=self.c).grid(row=4,column=2,pady=10)

        tk.Label(self,text='离散数学：').grid(row=5,column=1,pady=10)
        tk.Entry(self,textvariable=self.math).grid(row=5,column=2,pady=10)

        tk.Label(self,text='数据结构：').grid(row=6,column=1,pady=10)
        tk.Entry(self,textvariable=self.structure).grid(row=6,column=2,pady=10)

        tk.Button(self,text="录入",command=self.recode_info).grid(row=7,column=2,pady=10)

        tk.Label(self,textvariable=self.status).grid(row=8,column=2,pady=10,stick=tk.E)
    def recode_info(self):
        stu={"c":self.c.get(),
            "name":self.name.get(),
             "net":self.net.get(),
             "structure": self.structure.get(),
             "math":self.math.get(),
             "db":self.db.get()}
        #录入完毕后重置为空
        self.c.set('')
        self.name.set('')
        self.net.set('')
        self.structure.set('')
        self.math.set('')
        self.db.set('')
        #print(stu)
        db.insert(stu)
        self.status.set("提交数据成功")



class DeleteFrame(tk.Frame):
    def __init__(self,root):
        super().__init__(root)
        self.username=tk.StringVar()
        self.status=tk.StringVar()
        tk.Label(self,text='根据名字删除数据').pack()
        tk.Entry(self, textvariable=self.username).pack()
        tk.Button(self, text='删除',command=self.delete).pack()
        tk.Label(self, textvariable=self.status).pack()

    def delete(self):
        username=self.username.get()
        flag,message=db.delete_by_username(username)
        self.status.set(message)








#计算机网络原理，数据库系统原理，C语言，离散数学，数据结构
class SearchFrame(tk.Frame):
    def __init__(self,root):
        super().__init__(root)
        self.table_view=tk.Frame()
        self.table_view.pack()
        self.create_page()
    def create_page(self):
        columns=("name","net","db","c","math","structure")
        columns_values=("姓名","计算机网络原理","数据库系统原理","C语言","离散数学","数据结构")
        self.tree_view=ttk.Treeview(self,show="headings",columns=columns)
        self.tree_view.column('name',width=80,anchor="center")
        self.tree_view.column('net',width=100,anchor="center")
        self.tree_view.column('db',width=100,anchor="center")
        self.tree_view.column('c',width=100,anchor="center")
        self.tree_view.column('math',width=100,anchor="center")
        self.tree_view.column('structure',width=100,anchor="center")
        self.tree_view.heading('name',text='姓名')
        self.tree_view.heading('net',text='计算机网络原理')
        self.tree_view.heading('db',text='数据库系统原理')
        self.tree_view.heading('c',text='C语言')
        self.tree_view.heading('math',text='离散数学')
        self.tree_view.heading('structure',text='数据结构')
        self.tree_view.pack(fill=tk.BOTH,expand=True)
        self.show_data_frame()
        #这块command的方法不要加括号！！
        tk.Button(self,text="刷新数据",command=self.show_data_frame).pack(anchor=tk.E,pady=5)

    def show_data_frame(self):
        #删除旧的页面
        for _ in map(self.tree_view.delete,self.tree_view.get_children()):
            pass

        students=db.all()
        index=0
        for stu in students:
            print(stu)
            self.tree_view.insert("",index+1,values=(stu["name"],stu["net"],stu["db"],stu["c"],stu["math"],stu["structure"]))

